{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1.3 Performing AM in Code Space"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction\n",
    "\n",
    "**This section corresponds to Section 3.3 of the original paper.**\n",
    "\n",
    "Learning density models $p(x)$ that directly approximate the data distribution can be difficult, or even nearly impossible for complex datasets. Generative models do not explicitly provide the density function but are able to sample from it through the following steps:\n",
    "\n",
    "1. Sample from a simple distribution $q(z) \\sim \\mathcal{N}(0,I)$ defined in some abstract code space $\\mathcal{Z}$.\n",
    "2. Apply to the sample a decoding function $g : \\mathcal{Z} \\rightarrow \\mathcal{X}$ that maps it back to the original input domain.\n",
    "\n",
    "One such model that have gained popularity over the recent years is the Generative Adversarial Network (GAN). It learns a decoding function $g$ such that the generated images are theoretically impossible to distinguish from real images. The decoding function (generator) and the discriminant (discriminator) are typically neural networks. Here are some [great](https://wiseodd.github.io/techblog/2016/09/17/gan-tensorflow/) [blogs](http://blog.aylien.com/introduction-generative-adversarial-networks-code-tensorflow/) on GANs, if you are not familiar with them.\n",
    "\n",
    "[Nguyen et al.](https://arxiv.org/abs/1605.09304) proposed a method of building prototype images $x^{*}$ for each labels $\\omega_c$ by incorporating a pretrained generative model into the activation maximization framework. The optimization objective is redefined as (check tutorial 1.1 if you don't remember the original objective):\n",
    "\n",
    "\\begin{equation}\n",
    "\\max_{z \\, \\in \\, \\mathcal{Z}} \\log p(\\omega_c \\, | \\, g(z)) - \\lambda \\lVert z\\rVert^2\n",
    "\\end{equation}\n",
    "\n",
    "Now, instead of optimizing an image, we are optimizing the code $z$ such that the generated image $g(z)$ will maximize the activation for a particular class $\\omega_c$. Once the solution $z^{*}$ to the optimization problem is found, the prototype for $\\omega_c$ is generated by passing $z^{*}$ through the generator. That is, $x^{*} = g(z^{*})$. Hopefully, the prototype will turn out to be more realistic than vanilla AM, as the generator knows how to generate natural-looking images."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training Details\n",
    "\n",
    "Remember how I said we incorporate a *pretrained* generative model into the AM framework? Here I will explain how we train the generator. The paper for this particular GAN framework by Nguyen et al. can be found [here](https://arxiv.org/abs/1602.02644). First take a look at the overall schematic for the GAN framework.\n",
    "\n",
    "![title](./assets/1_3_AM_Code/schematic.png)\n",
    "\n",
    "The training process involves four networks:\n",
    "\n",
    "1. A pretrained encoder network $E$ to be inverted.\n",
    "2. A generator network $G$.\n",
    "3. A pretrained classifier $C$.\n",
    "4. A discriminator $D$.\n",
    "\n",
    "Note that we only have three networks in the above schematic while we require four. This is because the pretrained classifier serves as both $E$ and $C$. The activation of the hidden layer of the pretrained network acts as an encoding of the input as well as a means of comparing prominent features of two images. Now that we have figured out the components of this framework, let's see how the loss functions for $G$ and $D$ are defined. There are three parts.\n",
    "\n",
    "#### Loss in Feature Space\n",
    "\n",
    "Given a classifier $C: \\mathbb{R}^{W \\times H \\times C} \\rightarrow \\mathbb{R}^{F}$, we define\n",
    "\n",
    "\\begin{equation}\n",
    "L_{feat} = \\sum_i \\lVert C(G(x_i)) - C(y_i) \\rVert^2\n",
    "\\end{equation}\n",
    "\n",
    "where $y_i$ is the real image and $x_i$ is the encoding of $y_i$. With this loss, we are trying to encourage the generator to produce images whose features are similar to those of real images.\n",
    "\n",
    "#### Adversarial Loss\n",
    "\n",
    "The discriminator loss $L_{discr}$ and the generator loss $L_{adv}$ is given as follows:\n",
    "\n",
    "\\begin{align}\n",
    "L_{discr} = - \\sum_i \\log (D(y_i)) + \\log (1 - D(G(x_i)))\n",
    "L_{adv} = - \\sum_i \\log (D(G(x_i))\n",
    "\\end{align}\n",
    "\n",
    "This is just the GAN objective that constrains the generator to produce natural-looking images.\n",
    "\n",
    "#### Loss in Image Space\n",
    "\n",
    "Adding a pixel-wise loss stabilizes training.\n",
    "\n",
    "\\begin{equation}\n",
    "L_{img} = \\sum_i \\lVert G(x_i) -  y_i \\rVert^2\n",
    "\\end{equation}\n",
    "\n",
    "Now that we have a pretrained generator, we can simply plug $G$ into the AM framework. As I mentioned above, we are **not** training the generator nor the classifier. We are optimizing the code $z$ that goes into the generator such that the generated image maximizes the activation for the class $\\omega_c$.\n",
    "\n",
    "![title](./assets/1_3_AM_Code/schematic2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tensorflow Walkthrough"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. Import Dependencies\n",
    "\n",
    "We import the classifier (DNN), generator and the discriminator-the three components necessary for this AM framework."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting MNIST_data/train-images-idx3-ubyte.gz\n",
      "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n",
      "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n",
      "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "\n",
    "from models.models_1_3 import MNIST_DNN, MNIST_G, MNIST_D\n",
    "from utils import plot\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "mnist = input_data.read_data_sets(\"MNIST_data/\", one_hot=True)\n",
    "\n",
    "logdir = './tf_logs/1_3_AM_Code/'\n",
    "ckptdir = logdir + 'model'\n",
    "\n",
    "if not os.path.exists(logdir):\n",
    "    os.mkdir(logdir)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Building DNN Graph\n",
    "\n",
    "In this step, we initialize a DNN classifier and attach necessary nodes for model training onto the computation graph."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with tf.name_scope('Classifier'):\n",
    "\n",
    "    # Initialize neural network\n",
    "    DNN = MNIST_DNN('DNN')\n",
    "\n",
    "    # Setup training process\n",
    "    lmda = tf.placeholder_with_default(0.01, shape=[], name='lambda')\n",
    "    X = tf.placeholder(tf.float32, [None, 784], name='X')\n",
    "    Y = tf.placeholder(tf.float32, [None, 10], name='Y')\n",
    "\n",
    "    tf.add_to_collection('placeholders', lmda)\n",
    "    tf.add_to_collection('placeholders', X)\n",
    "    tf.add_to_collection('placeholders', Y)\n",
    "\n",
    "    code, logits = DNN(X)\n",
    "\n",
    "    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y))\n",
    "\n",
    "    optimizer = tf.train.AdamOptimizer().minimize(cost, var_list=DNN.vars)\n",
    "\n",
    "    correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(Y, 1))\n",
    "    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n",
    "\n",
    "cost_summary = tf.summary.scalar('Cost', cost)\n",
    "accuray_summary = tf.summary.scalar('Accuracy', accuracy)\n",
    "summary = tf.summary.merge_all()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. Building GAN Subgraph\n",
    "\n",
    "We now build the GAN part of the computation graph. If you see the right hand side of the $G$ cost, you can see that it is comprised of three terms. They are $L_{adv}$, $L_{img}$ and $L_{feat}$ from left to right."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with tf.name_scope('GAN'):\n",
    "\n",
    "    G = MNIST_G(z_dim=100, name='Generator')\n",
    "    D = MNIST_D(name='Discriminator')\n",
    "\n",
    "    X_fake = G(code)\n",
    "    D_real = D(X)\n",
    "    D_fake = D(X_fake, reuse=True)\n",
    "    code_fake, logits_fake = DNN(X_fake, reuse=True)\n",
    "\n",
    "    D_cost = -tf.reduce_mean(tf.log(D_real + 1e-7) + tf.log(1 - D_fake + 1e-7))\n",
    "    G_cost = -tf.reduce_mean(tf.log(D_fake + 1e-7)) + tf.nn.l2_loss(X_fake - X) + tf.nn.l2_loss(code_fake - code)\n",
    "\n",
    "    D_optimizer = tf.train.AdamOptimizer().minimize(D_cost, var_list=D.vars)\n",
    "    G_optimizer = tf.train.AdamOptimizer().minimize(G_cost, var_list=G.vars)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. Building Subgraph for Generating Prototypes\n",
    "\n",
    "Before training the network, a subgraph for generating prototypes is added onto the graph. This subgraph will be used after training the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "with tf.name_scope('Prototype'):\n",
    "    \n",
    "    code_mean = tf.placeholder(tf.float32, [10, 100], name='code_mean')\n",
    "    code_prototype = tf.get_variable('code_prototype', shape=[10, 100], initializer=tf.random_normal_initializer())\n",
    "\n",
    "    X_prototype = G(code_prototype, reuse=True)\n",
    "    Y_prototype = tf.one_hot(tf.cast(tf.lin_space(0., 9., 10), tf.int32), depth=10)\n",
    "    _, logits_prototype = DNN(X_prototype, reuse=True)\n",
    "\n",
    "    # Objective function definition\n",
    "    cost_prototype = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits_prototype, labels=Y_prototype)) \\\n",
    "                     + lmda * tf.nn.l2_loss(code_prototype - code_mean)\n",
    "\n",
    "    optimizer_prototype = tf.train.AdamOptimizer().minimize(cost_prototype, var_list=[code_prototype])\n",
    "\n",
    "# Add the subgraph nodes to a collection so that they can be used after training of the network\n",
    "tf.add_to_collection('prototype', code)\n",
    "tf.add_to_collection('prototype', code_mean)\n",
    "tf.add_to_collection('prototype', code_prototype)\n",
    "tf.add_to_collection('prototype', X_prototype)\n",
    "tf.add_to_collection('prototype', Y_prototype)\n",
    "tf.add_to_collection('prototype', logits_prototype)\n",
    "tf.add_to_collection('prototype', cost_prototype)\n",
    "tf.add_to_collection('prototype', optimizer_prototype)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is the general structure of the computation graph visualized using tensorboard.\n",
    "\n",
    "![title](./assets/1_3_AM_Code/graph.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5. Training Network\n",
    "\n",
    "This is the step where the DNN is trained to classify the 10 digits of the MNIST images. Summaries are written into the logdir and you can visualize the statistics using tensorboard by typing this command: `tensorboard --lodir=./tf_logs`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 0001 cost = 0.237656591 accuracy = 0.930690911\n",
      "Epoch: 0002 cost = 0.088291109 accuracy = 0.972981828\n",
      "Epoch: 0003 cost = 0.055177446 accuracy = 0.982690919\n",
      "Epoch: 0004 cost = 0.037826146 accuracy = 0.988145463\n",
      "Epoch: 0005 cost = 0.029179757 accuracy = 0.990963644\n",
      "Epoch: 0006 cost = 0.023033684 accuracy = 0.992272734\n",
      "Epoch: 0007 cost = 0.017406837 accuracy = 0.994400005\n",
      "Epoch: 0008 cost = 0.015977912 accuracy = 0.994672732\n",
      "Epoch: 0009 cost = 0.013727595 accuracy = 0.995818186\n",
      "Epoch: 0010 cost = 0.011904787 accuracy = 0.996363640\n",
      "Epoch: 0011 cost = 0.015322508 accuracy = 0.994763641\n",
      "Epoch: 0012 cost = 0.010558971 accuracy = 0.996327276\n",
      "Epoch: 0013 cost = 0.009135132 accuracy = 0.997018185\n",
      "Epoch: 0014 cost = 0.008601392 accuracy = 0.997127275\n",
      "Epoch: 0015 cost = 0.008166363 accuracy = 0.997127275\n",
      "Accuracy: 0.98\n"
     ]
    }
   ],
   "source": [
    "sess = tf.InteractiveSession()\n",
    "sess.run(tf.global_variables_initializer())\n",
    "\n",
    "saver = tf.train.Saver()\n",
    "file_writer = tf.summary.FileWriter(logdir, tf.get_default_graph())\n",
    "\n",
    "# Hyper parameters\n",
    "training_epochs = 15\n",
    "batch_size = 100\n",
    "\n",
    "for epoch in range(training_epochs):\n",
    "    total_batch = int(mnist.train.num_examples / batch_size)\n",
    "    avg_cost = 0\n",
    "    avg_acc = 0\n",
    "    \n",
    "    for i in range(total_batch):\n",
    "        batch_xs, batch_ys = mnist.train.next_batch(batch_size)\n",
    "        _, c, a, summary_str = sess.run([optimizer, cost, accuracy, summary], feed_dict={X: batch_xs, Y: batch_ys})\n",
    "        avg_cost += c / total_batch\n",
    "        avg_acc += a / total_batch\n",
    "        \n",
    "        file_writer.add_summary(summary_str, epoch * total_batch + i)\n",
    "    \n",
    "    print('Epoch: {:04d} cost = {:.9f} accuracy = {:.9f}'.format(epoch + 1, avg_cost, avg_acc))\n",
    "    \n",
    "    saver.save(sess, ckptdir)\n",
    "\n",
    "print('Accuracy:', sess.run(accuracy, feed_dict={X: mnist.test.images, Y: mnist.test.labels}))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6. Training GAN\n",
    "\n",
    "We now train $G$ (and $D$) according to the description above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 0001 G cost = 5281.714079368 D cost = 0.017211454\n",
      "Epoch: 0002 G cost = 2569.694126864 D cost = 0.006985294\n",
      "Epoch: 0003 G cost = 2222.643753551 D cost = 0.007533360\n",
      "Epoch: 0004 G cost = 2040.322469150 D cost = 0.007319166\n",
      "Epoch: 0005 G cost = 1915.783002042 D cost = 0.007434430\n",
      "Epoch: 0006 G cost = 1825.571832386 D cost = 0.004931086\n",
      "Epoch: 0007 G cost = 1751.774513494 D cost = 0.005131674\n",
      "Epoch: 0008 G cost = 1695.891795987 D cost = 0.005583258\n",
      "Epoch: 0009 G cost = 1648.915287420 D cost = 0.004081625\n",
      "Epoch: 0010 G cost = 1606.690468084 D cost = 0.004811222\n",
      "Epoch: 0011 G cost = 1574.847379927 D cost = 0.002461862\n",
      "Epoch: 0012 G cost = 1548.405506925 D cost = 0.004549469\n",
      "Epoch: 0013 G cost = 1523.959982688 D cost = 0.004773995\n",
      "Epoch: 0014 G cost = 1502.840756392 D cost = 0.001094513\n",
      "Epoch: 0015 G cost = 1484.560579057 D cost = 0.003348438\n",
      "Epoch: 0016 G cost = 1470.541124157 D cost = 0.001267561\n",
      "Epoch: 0017 G cost = 1452.866942472 D cost = 0.006172946\n",
      "Epoch: 0018 G cost = 1441.055687811 D cost = 0.001345314\n",
      "Epoch: 0019 G cost = 1430.559412731 D cost = 0.000703439\n",
      "Epoch: 0020 G cost = 1417.898278809 D cost = 0.000637727\n",
      "Epoch: 0021 G cost = 1408.476033159 D cost = 0.005673418\n",
      "Epoch: 0022 G cost = 1400.744808683 D cost = 0.000871855\n",
      "Epoch: 0023 G cost = 1390.985546875 D cost = 0.000661015\n",
      "Epoch: 0024 G cost = 1384.504009011 D cost = 0.002004977\n",
      "Epoch: 0025 G cost = 1374.515778143 D cost = 0.000687619\n"
     ]
    }
   ],
   "source": [
    "# Hyper parameters\n",
    "training_epochs = 25\n",
    "batch_size = 100\n",
    "img_epoch = 1\n",
    "\n",
    "for epoch in range(training_epochs):\n",
    "    total_batch = int(mnist.train.num_examples / batch_size)\n",
    "    avg_D_cost = 0\n",
    "    avg_G_cost = 0\n",
    "    \n",
    "    for i in range(total_batch):\n",
    "        batch_xs, _ = mnist.train.next_batch(batch_size)\n",
    "        feed_dict = {X: batch_xs}\n",
    "\n",
    "        _, D_c = sess.run([D_optimizer, D_cost], feed_dict=feed_dict)\n",
    "        _, G_c = sess.run([G_optimizer, G_cost], feed_dict=feed_dict)\n",
    "\n",
    "        avg_D_cost += D_c / total_batch\n",
    "        avg_G_cost += G_c / total_batch\n",
    "        \n",
    "    print('Epoch: {:04d} G cost = {:.9f} D cost = {:.9f}'.format(epoch + 1, avg_G_cost, avg_D_cost))\n",
    "\n",
    "# Uncomment this code if you want to see the generated images.\n",
    "#\n",
    "#     if (epoch + 1) % img_epoch == 0:\n",
    "#         samples = sess.run(X_fake, feed_dict={X: mnist.test.images[:16, :]})\n",
    "#         fig = plot(samples, 784, 1)\n",
    "#         plt.savefig('./assets/1_3_AM_Code/G_{:04d}.png'.format(epoch), bbox_inches='tight')\n",
    "#         plt.close(fig)\n",
    "    \n",
    "    saver.save(sess, ckptdir)\n",
    "\n",
    "sess.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is a visualization of the GAN training process. The image quality initially improves although it somewhat plateaus out in the later epochs.\n",
    "\n",
    "![title](./assets/1_3_AM_Code/train.gif)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7. Restoring Subgraph\n",
    "\n",
    "Here we first rebuild the DNN graph from metagraph, restore DNN parameters from the checkpoint and then gather the necessary nodes for prototype generation using the `tf.get_collection()` function (recall prototype subgraph nodes were added onto the 'prototype' collection at step 4)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./tf_logs/1_3_AM_Code/model\n"
     ]
    }
   ],
   "source": [
    "tf.reset_default_graph()\n",
    "\n",
    "sess = tf.InteractiveSession()\n",
    "\n",
    "new_saver = tf.train.import_meta_graph(ckptdir + '.meta')\n",
    "new_saver.restore(sess, tf.train.latest_checkpoint(logdir))\n",
    "\n",
    "# Get necessary placeholders\n",
    "placeholders = tf.get_collection('placeholders')\n",
    "lmda = placeholders[0]\n",
    "X = placeholders[1]\n",
    "\n",
    "# Get prototype nodes\n",
    "prototype = tf.get_collection('prototype')\n",
    "code = prototype[0]\n",
    "code_mean = prototype[1]\n",
    "X_prototype = prototype[3]\n",
    "cost_prototype = prototype[6]\n",
    "optimizer_prototype = prototype[7]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 8. Generating Prototype Images\n",
    "\n",
    "Before performing gradient ascent, we calculate the image means $\\overline{z}$ that will be used to regularize the prototype images. Then, we generate prototype images that maximize $\\log p(\\omega_c \\, | \\, g(z)) - \\lambda \\lVert z - \\overline{z}\\rVert^2$. I used 0.1 for lambda (lmda), but fine tuning may produce better prototype images."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 00000 Cost = 358.779754639\n",
      "Epoch: 00500 Cost = 275.063323975\n",
      "Epoch: 01000 Cost = 214.894088745\n",
      "Epoch: 01500 Cost = 168.886154175\n",
      "Epoch: 02000 Cost = 132.707305908\n",
      "Epoch: 02500 Cost = 103.784980774\n",
      "Epoch: 03000 Cost = 80.557037354\n",
      "Epoch: 03500 Cost = 61.938266754\n",
      "Epoch: 04000 Cost = 47.098171234\n",
      "Epoch: 04500 Cost = 35.386249542\n",
      "Epoch: 05000 Cost = 26.258031845\n",
      "Epoch: 05500 Cost = 19.242551804\n",
      "Epoch: 06000 Cost = 13.927100182\n",
      "Epoch: 06500 Cost = 9.950549126\n",
      "Epoch: 07000 Cost = 7.006939888\n",
      "Epoch: 07500 Cost = 4.849003792\n",
      "Epoch: 08000 Cost = 3.284199476\n",
      "Epoch: 08500 Cost = 2.165551901\n",
      "Epoch: 09000 Cost = 1.380895495\n",
      "Epoch: 09500 Cost = 0.844008684\n",
      "Epoch: 10000 Cost = 0.488746434\n",
      "Epoch: 10500 Cost = 0.264367282\n",
      "Epoch: 11000 Cost = 0.131287798\n",
      "Epoch: 11500 Cost = 0.058500197\n",
      "Epoch: 12000 Cost = 0.022639306\n",
      "Epoch: 12500 Cost = 0.007277159\n",
      "Epoch: 13000 Cost = 0.001836700\n",
      "Epoch: 13500 Cost = 0.000343904\n",
      "Epoch: 14000 Cost = 0.000050971\n",
      "Epoch: 14500 Cost = 0.000013767\n"
     ]
    }
   ],
   "source": [
    "images = mnist.train.images\n",
    "labels = mnist.train.labels\n",
    "\n",
    "code_means = []\n",
    "for i in range(10):\n",
    "    imgs = images[np.argmax(labels, axis=1) == i]\n",
    "    img_codes = sess.run(code, feed_dict={X: imgs})\n",
    "    code_means.append(np.mean(img_codes, axis=0))\n",
    "\n",
    "for epoch in range(15000):\n",
    "    _, c = sess.run([optimizer_prototype, cost_prototype], feed_dict={lmda: 0.1, code_mean: code_means})\n",
    "    \n",
    "    if epoch % 500 == 0:\n",
    "        print('Epoch: {:05d} Cost = {:.9f}'.format(epoch, c))\n",
    "    \n",
    "X_prototypes = sess.run(X_prototype)\n",
    "\n",
    "sess.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 9. Displaying Images\n",
    "\n",
    "By incorporating $G$ into the AM framework, we are now able to produce realistic images. Recall that just using AM resulted in blurry prototype images."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAssAAAQwCAYAAAATjRM7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XuUXGd15/3fVltS27pZsi6WJRkJW7HREGywwDA4QbzY\njCCMDSvvIjbvzOsQwFlZcQgDk4mHzBAvJpnlzAzkZdbyJFHAmBDAw5DEiImIYQzEAYwj2fgm+SbL\nF7XuLet+b2m/f3Q1KbefXV2n65yqp7q+n7V6qWv36XNOVbXO3s+p8+xj7i4AAAAArzSp0zsAAAAA\n5IpiGQAAAAhQLAMAAAABimUAAAAgQLEMAAAABCiWAQAAgADFcmbM7E/N7D+WvSwAALkjByJHRp/l\n9jGz5yUtkDQk6bSkTZL+QtIadz/T4rpXSfpLd19c4HdM0m2SPlwLfV7SLc4fBQCgZBnmwLdL+pSk\nN0ja5+5LW9kHTFycWW6/f+nuMyS9SsOF6u9K+kKH9uUmSe+VdJmk10n6l5J+vUP7AgCY+HLKgUck\n3SHpdzq0fXQJiuUOcfcD7r5W0q9IutHMXitJZnanmf3ByHJm9u/MbIeZbTezD5uZm9nF9cua2TRJ\n35Z0gZkdrn1d0MRu3CjpM+4+4O7bJH1G0q+W/FQBAHiZHHKgu/+ju39Z0pZKniQmDIrlDnP3f5Q0\nIOkXRv/MzFZL+rikqyVdLGlVsI4jkt4labu7T699bTezq8xsf4PN/zNJj9Q9fqQWAwCgch3OgUBT\nKJbzsF3SnET8/ZK+6O4b3f2opFuLrNTdf+ju5zZYZLqkA3WPD0iaXruWGQCAduhUDgSaQrGch0WS\nXkrEL5C0te7x1sQyrTgsaWbd45mSDjPBDwDQRp3KgUBTKJY7zMzeqOEDxQ8TP94hqX5m75IGqxpP\ngbtRw5P7RlxWiwEAULkO50CgKRTLHWJmM83sPZLu0nC7m8cSi31d0gfN7DVmdo6kRv0kd0k6z8xm\nFdiNv5D0cTNbVJsM8QlJdxb4fQAACsshB5rZJDPrlzR5+KH1m9mUAk8DPYJiuf2+ZWaHNPxx0u9J\n+qykD6YWdPdvS/rvkr4vabOkn9R+dCKx7JOSviZpi5ntN7MLzOwXzOxwg335M0nfkvSYpMcl/W0t\nBgBAFXLKgb8o6ZikdZIurH3/nXE9K0xo3JSki5jZazRc1E5196FO7w8AAO1CDkSncGY5c2b2PjOb\namazJf2RpG9xkAAA9AJyIHJAsZy/X5e0W9KzGr496G90dncAAGgbciA6jsswAAAAgABnlgEAAIDA\nWa38cu1WlJ+T1Cfp8+5+2xjLcxobXcHd234Xw9WrV/vg4GDDZR588MF73H11m3YJQAPkQExU5MCX\nG3exbGZ9km6XdI2G7+u+3szWuvumsnYO6CWDg4PasGFDw2XMbG6bdgdAA+RAoFw558BWziy/SdJm\nd98iSWZ2l6TrJHGgAMbpzJkznd4FAM0hBwIlyzUHtlIsL9LL79M+IOnK0QuZ2U2SbmphO0DPYMIt\n0DXIgUDJcs2BLV2z3Ax3XyNpjcT1WkAj7p7tqBrA+JADgebknANbKZa3SVpS93hxLYYmmBW7dr7M\n0Va07VxHdL2E9wDoGuTAzPX19SXjp0+fbvOeoFm55sBWiuX1kpab2TINHyCul/SBUvYK6FG5jqoB\nvAI5EChZrjlw3MWyuw+Z2c2S7tFw25w73H1jaXsG9Bh3z3ZUDeDlyIFAuXLOgS1ds+zu6yStK2lf\ngJ6X66gawCuRA4Fy5ZoDK5/gB6B5uY6qAQCoWq45kGIZyETOM4EBAKhSzjmQYjkz7RhV5TpyA+8N\ngDyU1TVpypQpyfjJkycL71NRuXW9oBPV2HJ9LSiWgYzkOqoGAKBqueZAimUgEznPBAYAoEo550CK\nZSAjuY6qAQCoWq45kGIZyEiuo2oAAKqWaw6kWAYykfNMYAAAqpRzDuyZYnnSpEnJeNE3pqzZrGed\nVeylj7bbaD3Hjh1LxnMduYH3BsA/mT59ejJ++PDhyrcd5ZZTp04VWk87ul50C47vY8v1NeqZYhno\nBrmOqgEAqFquOZBiGchEzh9BAQBQpZxzIMUykJFcP4ICAKBqueZAimUgI7mOqgEAqFquOZBiGchI\nrqNqAACqlmsO7JliuazRSvRGRt0q+vr6kvEZM2YUWj6yYMGC8GfLli1Lxvfs2ZOMDw4OJuP79u1L\nxg8ePJiMDw0NhfuUkut/jnbL+XotAO1XZteLKLecPn06GS/a9aJqU6ZMScYnT54c/k70nC+88MJk\nPMqNUbzqblpRF6/xbLsb5JwDe6ZYBroBAwcAQK/KNQdSLAMZyXVUDQBA1XLNgfE5fgBt5e5jfjXD\nzFab2VNmttnMbkn8/EIz+76Z/dTMHjWzd5f+ZAAAKKCsHFgFziwDGWl1VG1mfZJul3SNpAFJ681s\nrbtvqlvsP0j6urv/iZmtkLRO0tKWNgwAQItyPbNMsQxkpISR85skbXb3LZJkZndJuk5SfbHskmbW\nvp8laXurGwUAoFW5XrPMZRhAJkZmAjf6kjTXzDbUfd00ajWLJG2tezxQi9W7VdK/MrMBDZ9V/q2K\nnhIAAE1pMgeOqYpLETmzXJJGLV5SohYyCxcuTMbf/va3J+Mf/vCHw23MnTs3GY/a4OzevTsZ/+IX\nv5iM33///cn4tm3bkvGirYhyHWFWqYnnPOjuK1vczA2S7nT3z5jZWyR92cxe6+55fv4F9KioLVrU\nnrPR8SNqEdctouc2Z86c8HeuvfbaZDwqup5++ulk/Mc//nEyHrWmO3HiRDIe1QnRe9OoDWvRdrVF\nW7p2Sqt5v6pLEVsqls3seUmHJJ2WNFRCEgd6WgnXa22TtKTu8eJarN6HJK2WJHe/38z6Jc2VlB4t\nAUgiBwLlKiEHVnIpYhlnlt/u7um7WQAopISz6eslLTezZRoukq+X9IFRy7wo6R2S7jSz10jql5T+\nuAHAWMiBQEmayIFzzWxD3eM17r6m7nHqUsQrR63jVknfMbPfkjRN0tVjbZTLMIBMlHH3IncfMrOb\nJd0jqU/SHe6+0cw+LWmDu6+V9AlJf25m/0bDI+xf9V685gUAkI0mc2BHLkVstVh2DVfnLunPRlX3\nkqTaBKTRk5AAJJRRs7r7Og1fg1Uf+1Td95skvbXlDQEgBwIlKiEHVnIpYqvF8lXuvs3M5kv6rpk9\n6e731S9QO3iskaTaAQVAINcekwCSyIFAiUrIgZVcithSsezu22r/7jazv9HwhdX3Nf6t7hbNQI3e\n4HPPPTcZX7ky/SlC1PXive99bzJ+0UUXJeONRLOHZ8+enYz/1m+lO4tFy3/zm99MxqNuG9EM4WhG\nsRS/3tH70w1XGXT6DkUAiqk6B0YdhKLj3ERQ9BjeqBvGihUrkvGTJ08m41GOirqSRO9PtK9RR4qi\n+Ww82+gGZeTAqi5FHHexbGbTJE1y90O1798p6dPjXR8AziwD3YIcCJSvjBxYxaWIrZxZXiDpb2oj\nn7MkfdXd/66F9QE9jzPLQNcgBwIlyzUHjrtYrvWwu6zEfQF6WhndMAC0BzkQKFfOOZDWcUBGch1V\nAwBQtVxzIMUykJFcR9UAAFQt1xxIsVxQNDt1ypQpyXjU9eIDHxjdyWTYG9/4xmR83rx5yfjgYHzj\nqGjG7+HDh5Px6J7yZ52V/jN5z3vek4wfP348Gb///vuT8UOHDiXju3btSsaluFNG0VFp6v3s5Mg2\n11E1gHx003GiaOeOqDtSf39/Mv7qV786XNeFF16YjG/dujUZP3r06Bh793JR54nTp08XWk87RPk9\nt33N9W+bYhnIRM7XawEAUKWccyDFMpCRXEfVAABULdccSLEMZCTXUTUAAFXLNQdSLAOZ4A5+AIBe\nlXMOpFgGMpLrqBoAgKrlmgMnVLE8nvuoF11XdI/4t7zlLcl41DFi+fLlyXh0n/to1m3U2UKS9u/f\nn4y/+OKLyXj0nC+44IJk/JxzzknGr7nmmmQ8mnW7ffv2ZPzIkSPJuFTeLOTcRrG57Q8AtKLoMS3q\nhhHloY985CPhuqJOGc8880wyHuW0qIA7depUuO1OifJ4bl0vIrnmwAlVLAPdLOeZwAAAVCnnHEix\nDGQk11E1AABVyzUHUiwDGcl1VA0AQNVyzYEUy0BGch1VAwBQtVxzIMUykImcr9cCAKBKOefACVUs\nj2dEUrTrxbx585Lxt7/97cn41VdfnYxHfxAnTpxIxqPZuw8++GAyLkkbN25MxqMuE/39/cn4pZde\nmoy/7W1vS8YXLlyYjL/uda8rtP4DBw4k45L0k5/8JPxZN8t1VA0AZSqae6MuGY3yRLSu17zmNcn4\nXXfdlYx303H5rLPSZV3UDSO34jTX13pCFctAt8vtwAUAQLvkmgMploFM5Hz3IgAAqpRzDqRYBjKS\n66gaAICq5ZoDKZaBjOQ6qgYAoGq55kCKZSATOc8EBgCgSjnnwKyL5Wj2a5kvZl9fXzI+a9asZPyK\nK65IxleuXJmMDw0NJePRc7v77ruT8aj7w44dO5JxKR6h7dq1KxmP7nM/c+bMZHxgYCAZnzJlSjI+\nd+7cZDyavfvmN785GZfiLiDRc+gWuY6qAaBMUTeMqGtDdGycPXt2uI0oF0V5P6otjh49Gm6jDNH+\nRK9FI+TAaqQrtjpmdoeZ7Tazx+tic8zsu2b2TO3f+K8VQNPOnDnT8KsZZrbazJ4ys81mdkuwzPvN\nbJOZbTSzr5b6JIAJhBwItE8ZObAKYxbLku6UtHpU7BZJ97r7ckn31h4DaNHIbODoayxm1ifpdknv\nkrRC0g1mtmLUMssl/XtJb3X3fybpY+U/E2DCuFPkQKAtWs2BVRmzWHb3+yS9NCp8naQv1b7/kqT3\nlrxfQM8ZuV6rxVH1myRtdvct7n5S0l0a/v9a7yOSbnf3fbXt7i71iQATCDkQaI+ScmAln66O95rl\nBe4+crHsTkkLogXN7CZJN41zO0BPaWLkPNfMNtQ9XuPua+oeL5K0te7xgKQrR63j5yTJzH4kqU/S\nre7+d+PbY6AnkQOBCrR69rju09VrNJz/1pvZWnffVLdM/aer+8xs/ljrbXmCn7u7mYXPrpbI19R2\nMM8rt4EMNDkTeNDd07NJm3eWpOWSVklaLOk+M/t5d9/f4nqBnkMOBMpRUjeMn326KklmNvLp6qa6\nZQp/ujreYnmXmS109x1mtlBSJR/jtuNi7mhG7oIF6RMFV199daHlo64XUReLqBvGww8/nIyfOHEi\nGZfi5xbF+/v7k/Hvfe97yfjhw4eT8YULFybjUTeM6Dls3bo1GZekSy65JBl//PHHk/FuUcI1Wdsk\nLal7vLgWqzcg6QF3PyXpOTN7WsPF8/pWNw70iLbkwKKiY7gkHT9+vI17Mn5RB6nJkycn4xdddFG4\nrqjT0oEDB5LxbdtGHyqHlXWtbNHce+TIkVK220hqnzp5bXAJ267k09VmJvilrJV0Y+37GyV9c5zr\nAVCnhOu11ktabmbLzGyKpOs1/P+13t0aPqssM5ur4QPHlvKeBTDhkQOBCjSRA+ea2Ya6r/Fc4lT/\n6eoNkv7czM4d6xcaMrOv1VY418wGJP2+pNskfd3MPiTpBUnvH8fOAhil1VG1uw+Z2c2S7tHwiPkO\nd99oZp+WtMHd19Z+9k4z2yTptKTfcfe9Le46MCGRA4H2aSIHjnUpYiWfro5ZLLv7DcGP3jHW7wJo\nXll3L3L3dZLWjYp9qu57l/Tx2heABsiBQHuUlAN/9umqhovk6yV9YNQyd2v4jPIXm/10Nes7+AG9\nJte7FwEAULVcP12lWAYy0sk7FAEA0Em5fro6oYrlaKZpI1EXi1/+5V9OxhcvXpyMR/en37s3PVj5\n9re/nYw/88wzyXjUeSKaOdxI9DpFXSmi5QcGBpLxwcHBZDyatRzFV61alYxL0g9+8IPwZ92q03co\nAtDduqXjhRSfQYw6Q6xcmb5Mdf78uEVulLv27NmTjO/bty9cVxn6+vqS8U6+bznlnJxz4IQqloFu\nx5llAECvyjUHUiwDGcl1VA0AQNVyzYEUy0AmyuqGAQBAt8k5B1IsAxnJdVQNAEDVcs2BFMtARnId\nVQMAULVcc+CEKpaj+8BL8X3lly5dmozPnDkzGX/Vq16VjE+alL5z+GOPPZaMP/zww8l40a4X0Xal\neCZw9McYbePQoUPJ+IEDB5LxGTNmJOPRjN/ofTt58mQyLkmnTp0Kf9bNch1VA0CZotw1bdq0ZPyq\nq65Kxs8+++xwGwcPHkzGo7w8nu5SRVS9/okg1xw4oYploJvlfL0WAABVyjkHUiwDGcl1VA0AQNVy\nzYEUy0BGch1VAwBQtVxzIMUykImc714EAECVcs6BFMtARnIdVQMAULVcc+CEKpYbjUimTp2ajEcz\ncpcvX56MR50bnnjiiWT8u9/9bjL+1FNPJeNHjhxJxqP9bPScoz+6qEtG1DEkeu2ibhUXXnhhMj5/\n/vxkPPL3f//34c/OOeecZDya/dwtch1VA4AU549IdEyL4pdcckky/i/+xb9IxqO8JcX54KWXXkrG\niz43lC/XHDihimWgm+U8ExgAgCrlnAMploGM5DqqBgCgarnmQIplICO5jqoBAKharjmQYhnISK6j\nagAAqpZrDqRYBjKR8/VaAABUKeccSLEMZCTXUTUAAFXLNQeOWSyb2R2S3iNpt7u/tha7VdJHJO2p\nLfZJd19X1U42q9GIZNasWcl41Obs1KlTyfjZZ5+djB89ejQZf+6555LxvXv3JuNDQ0PJePQHNJ5W\nN1Ebuv7+/mR89uzZyfjll1+ejEev6b59+5Lx6LkNDAwk45J07Nix8GfdLNdRNdCrOpkDoxaZUb4p\nU5Qn+vr6kvEod0U5KmrDOm/evGR8zpw5yXgjUSvWBx98MBmPngPaJ9ccmP7f8HJ3SlqdiP+xu19e\n++p4oQx0u5G7FzX6AtB2d4ocCFQu5xw45plld7/PzJZWvysAch1VA72KHAi0T645sJkzy5GbzexR\nM7vDzNKf0wMoJNdRNYBXIAcCJcs1B463WP4TSRdJulzSDkmfiRY0s5vMbIOZbRjntoCeMDITuNEX\ngCyQA4GS5ZwDx9UNw913jXxvZn8u6X83WHaNpDW1ZTk1BjTA2WMgf+RAoBq55sBxFctmttDdd9Qe\nvk/S4+Xt0vhFM4cl6dxzz03G3/72tyfj8+fPT8a3bduWjN99993J+ODgYDIezRAu+ofSaPloG1FH\nj6lTpybjl1xySTK+atWqZHzBggXJeLSvP/rRj5LxkydPJuNSPBu8rNe1U8oYOZvZakmfk9Qn6fPu\nfluw3C9L+oakN7o7Z72AJrUrBzY6BlYt6noRibpnRMe0yZMnJ+NRro6O7cePHw/36R//8R+T8agT\nBzov109Qm2kd9zVJqyTNNbMBSb8vaZWZXS7JJT0v6dcr3EegZ7Ra1JtZn6TbJV0jaUDSejNb6+6b\nRi03Q9JvS3qgpQ0CExw5EGifMk5sVXHCqJluGDckwl8Ye3cBFFHS3YveJGmzu2+RJDO7S9J1kjaN\nWu4/SfojSb/T6gaBiYwcCLRHGTmwqhNGrXTDAFCyJmYCzx2ZLFT7umnUKhZJ2lr3eKAW+xkze4Ok\nJe7+t5U+GQAACiihG8bPThi5+0lJIyeMRhs5YRRfx1OHC3eAjDQxqh5095XjXb+ZTZL0WUm/Ot51\nAABQhSZy4NxRnWXW1CbRjkidMLqyfgX1J4zMrKlPVymWgUyU1Edym6QldY8X12IjZkh6raQf1CbM\nnC9prZldyyQ/AECnNJkDO3LCqCuL5WjWbaMZrkuXLk3GFy1alIyff/75yXjU3WLFihXJ+E9/+tNk\n/PTp08l4NON3PKLZxlHXkJUr039/73znO5PxN77xjcn4/v37k/ENG9K12AsvvJCMb926NRmX4tev\nqGnTpr0iduzYsVLWPR4lXLO8XtJyM1um4SL5ekkfGPmhux+QNHfksZn9QNK/pVAG8jM0NNSxbZ86\ndSoZj3JU1D0jWj7KT1GHqmj5w4cPJ+OS9JOf/CQZj3JOt3RNkuLXI3rfii7fKSXkwEpOGHVlsQxM\nVK0erN19yMxulnSPhmcC3+HuG83s05I2uPvaEnYTAIDSlTBgqeSEEcUykImSumHI3ddJWjcq9qlg\n2VUtbxAAgBaVkQOrOmFEsQxkpJs+BgQAoExl5MAqThhRLAMZyfXuRQAAVC3XHEixDGSEM8sAgF6V\naw7symJ5PCOPI0eOJONLlixJxk+ePJmMR504oq4a/f39yXhZfxDRDFdJmj17djJ+0UUXJeNvfvOb\nk/FVq1Yl4zNnzkzGn3766WR87dr0pUJPPfVUMn706NFkXIr/Bop2E4n+LjqhrGuWAUxs0XGuHYVG\ntI2i254xY0YyHnUjOnToUDL+5JNPhtv48Y9/nIxH+b2bFM0VuRah9XLOgV1ZLAMTVa4HCgAAqpZr\nDqRYBjLSDaN/AACqkGsOpFgGMpHzR1AAAFQp5xxIsQxkJNdRNQAAVcs1B1IsAxnJdVQNAEDVcs2B\nXVksRzOBjx8/Hv7Orl27kvENG9J3OLzyyiuT8QsuuCAZj7oqvOUtb0nGd+/eXWg955xzTjI+a9as\nZFySFi5cmIz/83/+z5PxD3/4w8n4lClTkvH9+/cn4//n//yfZPyFF15IxqP3rcwRZtTFJKf/mO6e\n7agaQD462Q0j2nZfX18yHnWEuvjii5Px1atXJ+NRB4sor0jSwMBA+LNuF+Wu6H0YGhqqcndKkXMO\n7MpiGZiocireAQBop1xzIMUykJFcR9UAAFQt1xxIsQxkIueZwAAAVCnnHEixDGQk11E1AABVyzUH\nUiwDGcl1VA0AQNVyzYFZFMtFZ/ZG8dOnT4fbiDo3fOc730nGL7300kLbnjdvXjL+jne8Ixk/duxY\nMr53795C+xN152j0O9Es5KlTpybjDz74YDJ+3333JeP33ntvMh69B4cPH07Gc/1PU5WcZwIDyEc7\njo1RB6Gix6ioK9PSpUuT8e3btyfjZ599djL+0EMPhduOaovJkycn41EN0cnuI5Hx1EG5yzkHpv83\n1DGzJWb2fTPbZGYbzey3a/E5ZvZdM3um9u/s6ncXmNjOnDnT8AtAe5EDgfbJNQeOWSxLGpL0CXdf\nIenNkn7TzFZIukXSve6+XNK9tccAWjAyso6+ALQdORBok1xz4JjFsrvvcPeHat8fkvSEpEWSrpP0\npdpiX5L03qp2EugFIzOBcxxVA72KHAi0R845sNA1y2a2VNLrJT0gaYG776j9aKekBcHv3CTppvHv\nItA7OHsM5IscCFQr1xzYdLFsZtMl/ZWkj7n7wfoL3t3dzSz5DN19jaQ1tXXk+SoAmeDsMZAnciBQ\nvVxzYFPFsplN1vBB4ivu/te18C4zW+juO8xsoaTd492JoiOJKVOmJOONXuRdu3Yl4z/60Y+S8fPP\nPz8Zf9vb3paMr1y5MhmfNm1aMr548eJkPHpu/f39yfh5552XjEvxbOY9e/Yk49Fr8a1vfSsZ/973\nvpeM79ixIxk/ceJEMl6060kj0YzpaNu5yXVUDfSyqnNgJ0WdHorGo1wXLX/WWenyY2BgIBmfOXNm\nMh51z2i0T0eOHAl/JyXHbhgTVa6vaTPdMEzSFyQ94e6frfvRWkk31r6/UdI3y989oHfkfL0W0KvI\ngUB75JwDmzmz/FZJ/1rSY2b2cC32SUm3Sfq6mX1I0guS3l/NLgK9I9dRNdDDyIFAm+SaA8cslt39\nh5LSn0FI6TtuABgXzh4DeSEHAu2Taw7M4g5+APK+exEAAFXKOQc2c1MSAG1SxvVaZrbazJ4ys81m\n9oobJZjZx2t3I3vUzO41s1eV/kQAACiom69Zzs7JkycL/040Wolm0n7zm+m5Gps3b07Gp0+fnoxf\nccUVyfisWbOS8Tlz5iTjkUZdHnbvTk/O/od/+Idk/Bvf+EYyvmHDhmR8//79yXh0b/p2/KEfPXq0\n8m1UqdVRtZn1Sbpd0jWSBiStN7O17r6pbrGfSlrp7kfN7Dck/RdJv9LShgFkLeroEIm6VUTHqKGh\noWR84cKFyfipU6cKxQcHB5PxqNOVJB06dCgZj3JUJNeznRNRGa+1ma2W9DlJfZI+7+63jfr5xyV9\nWMN359wj6dfc/YVG6+TMMpCJkmYCv0nSZnff4u4nJd2l4TuN1W/n++4+Mqr4iaR0H0MAANqkjBxY\nd8LoXZJWSLqhdnv6eiMnjF4n6RsaPmHUEMUykJGRa7aiL0lzzWxD3dfoO4MtkrS17vFALRb5kKRv\nl/ssAAAorokcOJZKThh15WUYwETVxMh50N3Td8ApyMz+laSVktJ32gEAoI2ayIFzzaz+2tA1tbtk\njkidMLqywfqaOmFEsQxkpITrtbZJWlL3eHEt9jJmdrWk35P0NnfvjtsbAgAmtCZyYEdOGFEsA5kY\nuV6rReslLTezZRoukq+X9IH6Bczs9ZL+TNJqd+/KW/QCACaWknJgJSeMurJYHs992qPZr1F8y5Yt\nyXg08/bYsWPJ+C/90i8l46tWrSq0P9G97B9++OFkXJLWrl2bjD/00EPJ+NatW5PxaNvRrOV2mDJl\nSjI+nk4pOWn1zLK7D5nZzZLu0fBM4DvcfaOZfVrSBndfK+m/Spou6X/V/i+96O7XtrbnAMpWNNdF\nHSykuFtF0S4ZUTETHZNfeCHdZODgwYPJ+OLF6ctHo/VE3Zqk8vIB3TDap4TXupITRl1ZLAMTVRnt\n9dx9naR1o2Kfqvv+6pY3AgBAyVrNgVWdMKJYBjKR892LAACoUlk5sIoTRhTLQEY6eYciAAA6Kdcc\nSLEMZIQzywCAXpVrDqRYBjJR0kxgAAC6Ts45kGIZyEiuo2oAAKqWaw7symI5ejEnTYrv3h2NVqLf\niZY/fPhwMn7vvfcm4+vXr0/G58yZk4xPnjw5Gd+5c2cyfvTo0WS8kajlW65/pCmdbFtXpVxH1QDa\nr+gxOWoPJxVvQ3fiRLF7FUWt4A4dOpSMDw4OJuOPPPJIMh4dG7vpmBnl9zLzWbSN6HWK2tV2Sq7v\nZ1cWy8CME3T7AAAgAElEQVRE1U0DFgAAypRrDqRYBjKR8/VaAABUKeccSLEMZCTXUTUAAFXLNQdS\nLAMZyXVUDQBA1XLNgRTLQCa4gx8AoFflnAPHLJbNbImkv5C0QJJLWuPunzOzWyV9RNKe2qKfrN1i\nsGPGMyIp+jvRGxnNKN23b1+heCcVnS1dVNHOI43k+h+qVbmOqoFe1U05sJGqj5lRDoyOaSdPnqxy\nd7LUji5O3d4pKtcc2MyZ5SFJn3D3h8xshqQHzey7tZ/9sbv/t+p2D+gtE3UQAHQxciDQJrnmwDGL\nZXffIWlH7ftDZvaEpEVV7xjQa3KeCQz0KnIg0B4558D4Lh4JZrZU0uslPVAL3Wxmj5rZHWY2O/id\nm8xsg5ltaGlPgR4wcs1W9AWgc8iBQLVyzYFNF8tmNl3SX0n6mLsflPQnki6SdLmGR92fSf2eu69x\n95XuvrKE/QUmtDNnzjT8AtAZ5ECgernmwKa6YZjZZA0fJL7i7n8tSe6+q+7nfy7pf1eyh0AP4ewx\nkB9yINAeuebAZrphmKQvSHrC3T9bF19Yu5ZLkt4n6fFqdrEcVXd6iLTjXvBFdeq1iNY/ZcqUZLzX\nZkvnfL0W0KsmSg4sKupeFB3He/HYVWaHp5QoV0v5FpWtyDkHNnNm+a2S/rWkx8zs4Vrsk5JuMLPL\nNdxK53lJv17JHgI9ZCIeAIEuRw4E2iTXHNhMN4wfSkoNb7LtJwl0q1xH1UCvIgcC7ZNrDuQOfkAm\nOj3bFwCATsk5B1IsAxnJdVQNAEDVcs2BFMtARnIdVQMAULVcc2DPFMudegOKdr0oc3ZttK5Ip7ph\n9FrXi0jOM4EBdLdGnRVSOBb9k+i1q/o1yrVwrErOObBnimWgG/TawREAgBG55kCKZSAjuY6qAQCo\nWq45sNjn9AAqNTIbOPpqhpmtNrOnzGyzmd2S+PlUM/uftZ8/YGZLS34aAAAUlmsOpFgGMjFyvVaj\nr7GYWZ+k2yW9S9IKDd84YcWoxT4kaZ+7XyzpjyX9UclPBQCAQnLOgRTLQEZKGFW/SdJmd9/i7icl\n3SXpulHLXCfpS7XvvyHpHVZ09g8AACXLNQe2+5rlQUkv1L6fW3vcS8Z8zmVer5PBtT/d+h6/qkPb\nvefMmTNzx1im38w21D1e4+5r6h4vkrS17vGApCtHreNny7j7kJkdkHSeuvO9ArpJx3JgJhOnujIn\ntPDadeXzFTnwFdpaLLv7vJHvzWyDu69s5/Y7rdeec68931a5++pO7wOA6pADe+s599rzbVXOOZDL\nMICJZZukJXWPF9diyWXM7CxJsyTtbcveAQBQnUpyIMUyMLGsl7TczJaZ2RRJ10taO2qZtZJurH3/\nf0v6nmfyGS0AAC2oJAd2ss/ymrEXmXB67Tn32vPtuNr1VzdLukdSn6Q73H2jmX1a0gZ3XyvpC5K+\nbGabJb2k4YMJgPbqxeNjrz3nXnu+HVdVDjROKAEAAABpXIYBAAAABCiWAQAAgEDbi+WxbkM4UZjZ\nHWa228wer4vNMbPvmtkztX9nd3Ify2RmS8zs+2a2ycw2mtlv1+IT9jkDQFHkwImZD8iBE1tbi+Um\nb0M4UdwpaXTPwFsk3evuyyXdW3s8UQxJ+oS7r5D0Zkm/WXtvJ/JzBoCmkQMndD4gB05g7T6z3Mxt\nCCcEd79Pw7Ms69XfYvFLkt7b1p2qkLvvcPeHat8fkvSEhu+SM2GfMwAURA6coPmAHDixtbtYTt2G\ncFGb96GTFrj7jtr3OyUt6OTOVMXMlkp6vaQH1CPPGQCaQA7sgXxADpx4mODXIbUG2BOub5+ZTZf0\nV5I+5u4H6382UZ8zAKCYiZoPyIETU7uL5WZuQziR7TKzhZJU+3d3h/enVGY2WcMHia+4+1/XwhP6\nOQNAAeTACZwPyIETV7uL5WZuQziR1d9i8UZJ3+zgvpTKzEzDd8V5wt0/W/ejCfucAaAgcuAEzQfk\nwImt7XfwM7N3S/r/9E+3IfzDtu5Am5jZ1yStkjRX0i5Jvy/pbklfl3ShpBckvd/dR0+A6EpmdpWk\nf5D0mKQztfAnNXzN1oR8zgBQFDlwYuYDcuDExu2uAQAAgAAT/AAAAIAAxTIAAAAQoFgGAAAAAhTL\nAAAAQIBiGQAAAAhQLAMAAAABimUAAAAgQLEMAAAABCiWAQAAgADFMgAAABCgWAYAAAACFMsAAABA\ngGI5M2b2p2b2H8teFgCA3JEDkSNz907vQ88ws+clLZA0JOm0pE2S/kLSGnc/0+K6V0n6S3dfXOB3\nfkfSjZJeJWlQ0v9w9//ayn4AAJCSYQ78N5J+S9JcSYcl/U9Jv+PuQ63sCyYeziy337909xkaLlBv\nk/S7kr7QoX0xSf+vpNmSVku62cyu79C+AAAmvpxy4FpJb3D3mZJeK+kySR/t0L4gYxTLHeLuB9x9\nraRfkXSjmb1WkszsTjP7g5HlzOzfmdkOM9tuZh82Mzezi+uXNbNpkr4t6QIzO1z7uqCJffgv7v6Q\nuw+5+1OSvinprVU8XwAARmSSA5919/0jm5J0RtLFJT9VTAAUyx3m7v8oaUDSL4z+mZmtlvRxSVdr\n+D/wqmAdRyS9S9J2d59e+9puZleZ2f7U7yS2ZbV92DiuJwIAQEGdzoFm9gEzO6jhSxEvk/RnrTwf\nTEwUy3nYLmlOIv5+SV90943uflTSrUVW6u4/dPdzm1z8Vg3/PXyxyDYAAGhRx3Kgu3+1dhnGz0n6\nU0m7imwDvYFiOQ+LJL2UiF8gaWvd462JZVpmZjdr+NrlX3L3E1VsAwCAQEdzoCS5+zMa/mT1f1S1\nDXSvszq9A73OzN6o4QPFDxM/3iGpfmbvkgarGldbEzP7NUm3SPpFdx8YzzoAABiPTufAUc6SdFEJ\n68EEw5nlDjGzmWb2Hkl3abjdzWOJxb4u6YNm9hozO0dSo36SuySdZ2azCuzD/yPpP0u6xt23FNh9\nAADGLZMc+GEzm1/7foWkfy/p3qafBHoGxXL7fcvMDmn446Tfk/RZSR9MLeju35b03yV9X9JmST+p\n/egVl0q4+5OSviZpi5ntN7MLzOwXzOxwg335A0nnSVpfN4P4T8f7xAAAGENOOfCtkh4zsyOS1tW+\nPjm+p4WJjJuSdBEze42kxyVNpWk6AKCXkAPRKZxZzpyZvc/MpprZbEl/JOlbHCQAAL2AHIgcUCzn\n79cl7Zb0rIZvD/obnd0dAADahhyIjuMyDAAAACDAmWUAAAAg0FKf5dqtKD8nqU/S5939tjGW5zQ2\nuoK7W7u3uXr1ah8cHGy4zIMPPniPu69u0y4BaIAciImKHPhy4y6WzaxP0u2SrtHwfd3Xm9lad99U\ndF2TJqVPcJ85c2a8u/cKZun3vdsvQ4mel9T9z62Rou9nN7z/g4ODWr9+fcNlJk2aNLdNuwOggTJz\n4ETQqWNsoxzY19eXjA8NMT8wRznnwFYuw3iTpM3uvsXdT2q4sfh15ewW0JvcveEXgGyQA4GS5ZoD\nW7kMY5Fefp/2AUlXjl7IzG6SdFML2wF6gruX+mkKgEqRA4ES5ZwDW7pmuRnuvkbSGonrtYCxcPYY\nmFjIgUDzcs2BrRTL2yQtqXu8uBbLUm5vQNHru+bPn5+M7969u/Jt56jovnbLc8t1VA3gFboqB1at\n6mNsf39/Mn78+PHwd06fPp2MR/n0wIEDyfiJE6+4u3ZD0TysKD6ea6jbMderE3Ld/1auWV4vabmZ\nLTOzKZKul7S2nN0CelOu12sBeAVyIFCyXHPguM8su/uQmd0s6R4Nt825w903lrZnQI/J+XotAC9H\nDgTKlXMObOmaZXdfJ2ldSfsC9DzOHgPdgxwIlCvXHFj5BD8Azct1VA0AQNVyzYEUy0AmOn1NFgAA\nnZJzDsyiWC5rJJHj3ezOOiv9EkfxaGbveLpeRHL9Y0S+o2oA1Zk8eXIyHnVJKHqn0ka/E4m6LUTr\nieLReqJ9jTpYNOp6EYn2Kcqn0b4WFR3Hyzy+F11X9Dd26tSpMnanNLnmwCyKZQDDGMgAAHpVrjmQ\nYhnIRM4zgQEAqFLOOZBiGchIrqNqAACqlmsOpFgGMpLrqBoAgKrlmgMploFM5DwTGACAKuWcAydU\nsdzoRe7r60vGo1FMNFM3Wr7oPd+XLl2ajM+aNSsZnzlzZjL+3HPPJeNSvK979+5Nxk+cOJGMR69r\n0dcimuWMf5LrqBpAdYp2JJgxY0Yyfvjw4fB3Lr300mT8+eefT8aj43XRfS2aJyJFc7hU/CP9bjr+\nRh21opojt64XkTLeAzNbLelzGr6z5ufd/bZRP79Q0pcknVtb5pbaDYZC5fRJAVCKkZF19NUMM1tt\nZk+Z2WYzuyXx8wvN7Ptm9lMze9TM3l36EwEAoKBWc6CZ9Um6XdK7JK2QdIOZrRi12H+Q9HV3f72k\n6yX9j7HWO6HOLAPdrIyZwHUHimskDUhab2Zr3X1T3WIjB4o/qR1E1kla2tKGAQBoQUndMN4kabO7\nb5EkM7tL0nWS6nOgSxr5uH6WpO1jrZRiGchICddrVXKgAACgak3kwLlmtqHu8Rp3X1P3eJGkrXWP\nByRdOWodt0r6jpn9lqRpkq4ea6MUy0BGmhhVd+RAAQBA1ZrIgYPuvrLFzdwg6U53/4yZvUXSl83s\nte4ebpxiGchIE6PqjhwoAACoWgmfrm6TtKTu8eJarN6HJK2ube9+M+uXNFdS+j7o6qFiuWgnhnnz\n5iXj0T3lo5nGl112WTL+vve9r9B6jh8/nozv2rUrGW/0O3/5l3+ZjO/cuTMZ3749/Sn9nj17kvFo\n1m00+7loRxIp38blrSjpeq1KDhQA8nHo0KHCv7N58+ZkPOqeUNTZZ5+djL/+9a9Pxi+66KJk/MCB\nA8n4o48+Wmh5SZo9e3YyHnUNOXjwYDIedZ44duxYMt6Ozk/R+1a0y0hq+bL+JooqKQeul7TczJZp\nOPddL+kDo5Z5UdI7JN1pZq+R1C8pXdDU0A0DyEgJ3TB+dqAwsykaPlCsHbXMyIFCzR4oAACoWqs5\n0N2HJN0s6R5JT2h4MvtGM/u0mV1bW+wTkj5iZo9I+pqkX/UxVt4zZ5aBbtDqqNrdh8xs5EDRJ+mO\nkQOFpA3uvlbDB4o/N7N/o+HJfmMeKAAAqFoZfZZrPZPXjYp9qu77TZLeWmSdFMtAJsq6e1EVBwoA\nAKrEHfwANKWb7iAFAECZcs2BFMtARnIdVQMAULVccyDFMpCJkmYCAwDQdXLOgS0Vy2b2vKRDkk5L\nGiqh/2s2Tpw4kYyfd955yXjUNmfJkiXJ+LJly5LxhQsXJuPnnntuMh61tJHi9jgrVoy+TfqwqLXQ\nV7/61WT8hz/8YaHtHjlyJBmP/nOMZ4Q5efLkQuvqVIucSK6jagCvVHUOjPJK1LKskaLHurlz5ybj\nU6dOTcbf//73F1r/lVeOvlfSsEWLFhVaz5w5c8KfnXPOOcl41Ibu2WefTca//vWvJ+NRe9Zt20Z3\n6xw2ODiYjEfGkw/6+/uT8agVa6qGiHJ4O+SaA8s4s/x2dy/2FwAgKddRNYAQORAoSa45kMswgIzk\nOqoGAKBquebAVm9K4pK+Y2YPmtlNZewQ0KtGrtdq9AUgK+RAoCQ558BWzyxf5e7bzGy+pO+a2ZPu\nfl/9ArUDCAcRoAm5jqoBJJEDgRLlmgNbOrPs7ttq/+6W9DeS3pRYZo27r5xIk/+AquQ6qgbwSuRA\noFy55sBxn1k2s2mSJrn7odr375T06dL2TPHszfEsX/RFnjQpPY6YNm1aMn7dddcl41HXi8ju3buT\n8YMHDybj+/fvL7yuqCtF5LLLLkvGn3rqqWR87969yXj0HkSv9Xj+Y5w6dSoZb9Q1JBc5370IwMuN\nNwem8tTixYuTy27fvj0Z7+vrS8aj7hlSfNyPclrUNSnKadFzuPTSS5PxefPmJeNRHp81a1YyPnPm\nzGRcijtlRMfZKH9cfvnlyfiTTz6ZjG/ZsiUZj9638XSEil6no0ePJuNRZ5BUbdGpPJRzDmylglgg\n6W9qb9hZkr7q7n9Xyl4BPYqzx0DXIAcCJcs1B467WHb3LZLSpxwBjEuuo2oAL0cOBMqXaw7M/7Np\noEfkfPciAACqlHMOpFgGMpLrqBoAgKrlmgMploGM5DqqBgCgarnmwKyL5WiEEc0CbfQiR90Qotmy\nBw4cSMYXLFiQjP/0pz8ttE8vvfRSMh7d1z16Le6+++5kvNHvRDOmly5dmoxHr3c0K3rbtm3J+L59\n+5Lx06dPJ+PjEe3r0NBQMp6anVzm/hSV66gaQDlS/8ejY2bRwiHKH1J8bIw6QESdHiIrV6Y740Ud\nINavX5+MHz58OBmfPn16Mh51npDijh6HDh0Kfyfl1a9+dTIe5bSpU6cm48ePH0/Gx3Pcj34n6i51\n4sSJZDxVG0X5sh1yzYFZF8tAL8n5ei0AAKqUcw6kWAYykuuoGgCAquWaAymWgYzkOqoGAKBqueZA\nimUgEznfvQgAgCrlnAMploGM5DqqBgCgarnmwKyL5WhWZxRvNIMz6nAQzYotOnM4Wv+zzz6bjEcz\nfvfs2ZOMHzt2LBmPZrhKcUePadOmJeNRl4w3vOENyXh0r/mnn346Gd+7d28yHr2fjf7TRKPPKB7N\nEk/N1I5e63bIdVQNoDrRsS7KQ0uWLEnGo2OsFOfHKVOmJONRF4uok9PmzZuT8YceeigZjzpJRPsT\nbTfKZ5I0MDCQjJ9//vnJ+KJFi5LxyZMnJ+NRXomeQzsKwWgbs2bNSsZTNVAn81CuOTDrYhnoJTnP\nBAYAoEo550CKZSAjuY6qAQCoWq45kGIZyEiuo2oAAKqWaw6kWAYykuuoGgCAquWaAymWgUzkfL0W\nAABVyjkHZl0sRyOMMu9bHnW3iGbY7t69OxmPOijMnDkzGd+/f38yHs2ujZaP9l+Ku1tEXSyiGcKX\nXnppMv7kk08m49FM7e3btyfj0fsZdQwZj7POSv+pp963Tv5nzXVUDaA6UdeLqCNF1OWhUWeIkydP\nFtqnqLNG1IHprrvuSsajY1q0nnnz5iXjUY6dPn16Mi5Js2fPTsaXLVuWjEcdI6ZOnZqMHzlyJBmP\n8k30fkY5MPq7kOLXNdpGJLfitIwcaGarJX1OUp+kz7v7bYll3i/pVkku6RF3/0CjdaZ7dgHoiDNn\nzjT8aoaZrTazp8xss5ndEizzfjPbZGYbzeyrpT4JAADGodUcaGZ9km6X9C5JKyTdYGYrRi2zXNK/\nl/RWd/9nkj421nqzPrMM9JIy7l5Ud6C4RtKApPVmttbdN9UtU3+g2Gdm81vaKAAALSrpDn5vkrTZ\n3bdIkpndJek6SZvqlvmIpNvdfV9tu+lLBupwZhnISAlnln92oHD3k5JGDhT1Ch8oAACoWhM5cK6Z\nbaj7umnUKhZJ2lr3eKAWq/dzkn7OzH5kZj+pXbbREGeWgYw0Maqea2Yb6h6vcfc1dY9TB4orR63j\n5yTJzH6k4Wu6bnX3vxvfHgMAUI4mcuCgu69scTNnSVouaZWkxZLuM7Ofd/f05DBRLAPZaHImcEcO\nFAAAVKmkbhjbJNV3GVhci9UbkPSAu5+S9JyZPa3hnLg+WmnWxXKZnQEmTUpfcRLNWo1muUYzTQ8c\nOJCMHzx4MBmPZr9GfyhRPJqlK0mnT59OxqMZwr/4i7+YjEfdMFL3lJek559/vtD+RLO0o64dUvz+\nFF2+0WzjTijhb76SAwWA6kT5KcoTUaej48ePh9uIji3R8Tc6NkbH/aJFTvScoy4ZUZelqIuTJF10\n0UXJeNQNY8WKFcn44OBgMh69FkePHk3Go/czei2inNlI9DtRLZKbEnLgeknLzWyZhnPf9ZJGd7q4\nW9INkr5oZnM1/GnrlkYrHfOaZTO7w8x2m9njdbE5ZvZdM3um9m+6+gJQSAnXLP/sQGFmUzR8oFg7\napm7NXxWWc0eKIBeRQ4E2qfVHOjuQ5JulnSPpCckfd3dN5rZp83s2tpi90jaa2abJH1f0u+4e7pX\nYk0zE/zulDT64udbJN3r7ssl3Vt7DKBFI7OBo68mfr+SAwXQw+4UORBoi1ZzYG0d69z959z9Inf/\nw1rsU+6+tva9u/vH3X2Fu/+8u6ebhNcZ8zIMd7/PzJaOCl+n2pkpSV+S9ANJv9vUswCQVNbdi9x9\nnaR1o2KfqvveJX289gWgAXIg0B4T8Q5+C9x9R+37nZIWRAvW2nqMbu0BIIE7+AFdgRwIVCDXHNjy\nBD93dzMLn12trdUaSWq0HNDrch5VA0gjBwLlyDkHjrdY3mVmC919h5ktlNTWmxpE94I/fPhw+DvR\nDNFoFBPFozey6KzVol0vItFrIUmTJ09OxouO3KJOH1EnkaiLRTQTOFK044UUz+Au+j53Sq4HCgAv\nM+4cmOqoFB0zo24Lx44dS8bH092n6DGwaEeHaJ+ijh7z5s1Lxt/2trcl4x/84AeTcSnOIXv27Al/\nJ+Wee+5Jxl944YVkPOo8Eb3W4+l6UVSUr1P7VDRXlynXHDjeO/itlXRj7fsbJX2znN0BelsZkxsA\nVI4cCFQg1xw45pllM/uahicyzDWzAUm/L+k2SV83sw9JekHS+6vcSaAX5PwRFNCryIFAe+ScA5vp\nhnFD8KN3lLwvQM/j7DGQF3Ig0D655sCs7+AH9JpcR9UAAFQt1xxIsQxkJNdRNQAAVcs1B3Zlsdyo\n60VRZd3PPlK0C0N/f38yHnW2iGa4StLUqVOT8RMnTiTjO3fuTMbnzJmTjEevXfT+RLOio+cQ7Wcj\nuf5Ha0bO12sBKEeq80HU9aKoMo9/0bqiHJjq8iFJ06ZNS8ZXrFiRjP/hH/5hMn7FFVck4406Qp08\neTIZf/zxx5PxBx54IBmPOkIdPXo0GY+O49Fr147j/qlTpyrfRqtyzoFdWSwDE1U3F/sAALQi1xxI\nsQxkJNdRNQAAVcs1B1IsA5nodB9JAAA6JeccSLEMZCTXUTUAAFXLNQdSLAMZyXVUDQBA1XLNgVkU\ny1Gnh6KzNxt1hijrXudRR4dolmsUnzJlSjJ+7rnnFtqfRt05olnI0aziV7/61cn4/v37k/Hvfe97\nyfi+ffuS8ePHjyfjRTuMlCn1fnbqP2vOM4EBVKdoXkl11GiXaJ9mz56djF9yySXJ+O/+7u8m4699\n7WuT8ahOiDpSSNKePXsK/U5UQ7zqVa9Kxp944olkPMqBUaeoXAvEdss5B2ZRLAMYxkETANCrcs2B\nFMtARnIdVQMAULVccyDFMpCRXEfVAABULdccSLEMZCLn67UAAKhSzjmQYhnISK6jagAAqpZrDsyi\nWC7rnuXjeZGjWchnn312Ml70nu9z5sxJxhcvXpyMRzOKo+UPHTqUjEtSX19fMn7ttdcm4zNnzkzG\nN2zYkIw/9NBDyfiBAweS8ei1jjqVNOqSEb0P0WzmaF0nT54Mt9EJuY6qAZQjdSyK/t9HHY0OHjxY\n6j4VER3H+/v7k/FFixYl4zt27EjGow4T559/fjLeKE88/fTTyfjAwEAyHr3eF1xwQTIedfqIul5E\nr914umTkWlS2KtccmEWxDCDvuxcBAFClnHMgxTKQkVxH1QAAVC3XHEixDGQk11E1AABVyzUHUiwD\nmch5JjAAAFXKOQdSLAMZyXVUDQBA1XLNgRTLQEZyHVUDAFC1XHPgmMWymd0h6T2Sdrv7a2uxWyV9\nRNKe2mKfdPd1Ve1kYp8KxaXG7WVSotHN/Pnzk/ELL7wwGT/vvPOS8auuuioZj9rvRC699NLwZ9Fz\niNrjRG3UXnzxxWR8586dhbYbmTx5cjJ++vTp8HeK/g1E739q+U6ObHMdVQO9quwcmPo/Hh23Otki\nLhIdr6N9jVrBRe3Sorate/fuTcajtm6SNHXq1GQ8yi0LFixIxi+++OJkfO7cucl4VCdEz/no0aPJ\n+HhyYJTronWRA5vTTAV5p6TVifgfu/vlta+2FcrARDVyvVajr2aY2Woze8rMNpvZLQ2W+2UzczNb\nWdqTACaeO0UOBCqXcw4cs1h29/skvdTUHgJoyUifyehrLGbWJ+l2Se+StELSDWa2IrHcDEm/LemB\nkp8CMKGQA4H2yTUHFrs24eVuNrNHzewOM0vfdm54h24ysw1mlr4NHICfKWFU/SZJm919i7uflHSX\npOsSy/0nSX8k6Xh5ew/0FHIgULJcc+B4i+U/kXSRpMsl7ZD0mWhBd1/j7ivdnY96gQbGGlE3eS3X\nIklb6x4P1GI/Y2ZvkLTE3f+2vL0Hego5EChZkzlw7sjgs/Z106jVVJIDx9UNw9131W30zyX97/Gs\nB8DLNTFynjvqDNUad1/T7PrNbJKkz0r61eJ7B0AiBwJVaSIHDrYy8BxvDhxXsWxmC919R+3h+yQ9\nPp71jFd0hq3RzNEpU6Yk4/PmzUvGFy1alIxHs2s/+tGPJuPLly9Pxs8555xkfPPmzcn47NnpT/mi\nzhaSdOLEiWR8yZIlhbZ9xRVXJOM7duxIxn/84x8n4+eee24yHs3ebTQT/MCBA8n4sWPHkvHo/Xzh\nhRfCbXRCE2ePxzpQbJNU/wYvrsVGzJD0Wkk/qM2CPl/SWjO71t35mBhoQis5MPV/PMoHp06dSsaj\ngqJRoVG0g1B0LIrySrSeXbt2JePRsbevr6/Q/jz77LPJuBTnx2XLliXjUVerV7/61cn40NBQMr59\n+/ZkfNu2bcl41AHkyJEjybgUv9eN6qCU3LpPlLA/leTAZlrHfU3SKg2f0RqQ9PuSVpnZ5ZJc0vOS\nfr3IMwHwSiXdvWi9pOVmtkzDB4jrJX2gbhsHJP2s35GZ/UDSv6VQBtLIgUB75JwDxyyW3f2GRPgL\nze0zgCJaHVW7+5CZ3SzpHkl9ku5w941m9mlJG9x9bQm7CfQMciDQPrnmQO7gB2SkjLsX1Xq+rhsV\n+1Sw7KqWNwgAQAlyzYEUy0BGcrt+DACAdsk1B1IsA5ko6XotAAC6Ts45MOti+ayziu1eNKNYiu9n\nH84IxCoAACAASURBVN3bPepice211ybj0SzaaJT00kvpG0KdPHkyGY9mCEfPq5HBwcFkPHq9Z86c\nmYyvWPGKm+JIkvbu3ZuMRzOHDx8+nIyff/75ybgk7du3LxmPupU8//zzyXg0g7tTch1VAyhH6lh+\n9OjRppeV4s5CUZcgqfjH2/39/YXWE3Wc2rNnT6H1FO3acejQoWRckmbNmpWMT58+PRmPaogoX0dd\nlqIuHOedd14yvnPnzmS8UQ0U1QpFpV7XTuahXHNg1sUy0GtyHVUDAFC1XHMgxTKQiQJ36QMAYELJ\nOQdSLAMZyXVUDQBA1XLNgRTLQEZyHVUDAFC1XHMgxTKQiZxnAgMAUKWcc2DWxXI0wohmuB4/fjxc\n18UXX5yMf/SjH03Go/urz5gxIxmPZic/+uijyfimTZuS8YMHDybj73znO5PxqCuEJC1cuLDQNqLZ\nxpdcckkyHr0W0XqeffbZZDzqJHLs2LFkXIpnJ0edNaJOHKnuGY3+jqqW66gaQDmi3JISFQ7R8axR\nd5+zzz67UDzaRtSF4dSpU+G2U6JjXdFiqVHHiOg5zJ8/PxmP3ptJkyYl40eOHBlj714u6noRvabt\nyAe55Zzc9mdE1sUy0GtyHVUDAFC1XHMgxTKQkVxH1QAAVC3XHEixDGQi5+u1AACoUs45kGIZyEiu\no2oAAKqWaw6kWAYykuuoGgCAquWaA7MolqPZrNFM1v379yfjUUcKKX4Ddu3alYy/+93vTsaj7hP9\n/f3J+NKlS5PxqGvDc889l4xHr0W0Hkk6ceJEMh7N4L3iiiuS8ei1i7pYzJ07Nxk///zzk/HXve51\nyfgdd9yRjEvStm3bkvFoNnO07dRzi2YmVy3nuxcBaL/p06cn41OmTEnG+/r6wnVFx8boeBd1nYry\nStRV4+jRo8l41JWpaFeNRs/5vPPOS8ajHLVq1apC24g6PA0ODibjUe0SadTdJMoV0b4W6cLSKTnn\nwCyKZQDDch1VAwBQtVxzIMUykJFcR9UAAFQt1xxIsQxkIueZwAAAVCnnHEixDGQk11E1AABVyzUH\nUiwDGcl1VA0AQNVyzYFZFMtF73O/YMGCZPzQoUPhNqLODdFM3RkzZiTj0UzdaNvnnHNOMr5w4cJk\nfNmyZcl41LXjqaeeSsYladOmTcl41Lkj6pIRvRbRcy46MvzGN76RjN9///3h7xSd8btnz55Cy3dC\nzjOBAbRflJ+iThXR8o1+59ixY8l41Ekiytdz5sxJxqOOTVFHo2j9UdesefPmJeOSdPnllxeKT5s2\nLRk/cOBAMv7www8n408++WQyHnUeiY77jbphRD/LKacVlXMOnDTWAma2xMy+b2abzGyjmf12LT7H\nzL5rZs/U/p1d/e4CE9uZM2cafgFoL3Ig0D655sAxi2VJQ5I+4e4rJL1Z0m+a2QpJt0i6192XS7q3\n9hhAC0ZG1tEXgLYjBwJtkmsOHLNYdvcd7v5Q7ftDkp6QtEjSdZK+VFvsS5LeW9VOAr1gZCZwjqNq\noFeRA4H2yDkHFrpm2cyWSnq9pAckLXD3HbUf7ZSUvJDYzG6SdNP4dxHoHZw9BvJFDgSqlWsObLpY\nNrPpkv5K0sfc/WD9xeXu7maWfIbuvkbSmto68nwVgExw9hjIEzkQqF6uObCpYtnMJmv4IPEVd//r\nWniXmS109x1mtlDS7rJ3btKk9FUi0Ys5ZcqUcF333XdfMh7d5/6qq65KxmfPTs/heOmll5LxpUuX\nJuPnn39+Mh51gHjooYeS8aeffjoZl6QdO3Yk48ePH0/GH3300WR8+vTpyXg0uzoSza6OXrtG/2mi\nGb/dPkM411E10MuqzoFR7oqOgVHnouXLl4fb2LhxYzJ+6aWXJuOrV69Oxh955JFkfO7cucl4lCem\nTp2ajG/dujUZj7peXHzxxcm4JF122WXJeJTTXnzxxWT8scceS8bXrVuXjO/bty8ZL5qHejEf5Pqc\nm+mGYZK+IOkJd/9s3Y/WSrqx9v2Nkr5Z/u4BvSPn67WAXkUOBNoj5xzYTDeMt0r615L+LzN7uPb1\nbkm3SbrGzJ6RdHXtMYAW5DoTGOhh5ECgTcrIgWa22syeMrPNZvaKLjVm9vFaK8hHzexeM3vVWOsc\n8zIMd/+hpKgz9jvG3m0AzSpj5GxmqyV9TlKfpM+7+22jfv5xSR/WcEusPZJ+zd1faHnDwAREDgTa\np9UcaGZ9km6XdI2kAUnrzWytu9ffpe2nkla6+1Ez+w1J/0XSrzRabzNnlgG0wVgj6mZG1XUHindJ\nWiHphlpP2HojB4rXSfqGhg8UAAB0TBk5UNKbJG129y3uflLSXRpu81i/ne+7+8jtLn8iafFYK6VY\nBjJSwvValRwoAACoWgk5cJGk+lmiA7VY5EOSvj3WSgv1Wc7F7t3pScdnn312+DvRPdlfeCH96fPf\n/u3fJuPRjNxoPZdcckky/oMf/CAZjzpVPPfcc8n4wMBAMi5JQ0NDyXg0Oou6UkRdSaJZzvPnz0/G\nn3322WR82rRpyXj0mkrx+7Bz587wd7pBEyPnuWa2oe7xmlprqhGpA8WVDdbX1IECQHVOnTqVjEfH\ng6hoiI7hktTf35+MHzt2rNC6opx2+eWXJ+NRZ6moG8bChQuT8aNHjybjUdenRttYv359Mh51vfjy\nl7+cjEedO4q+n+0QdYrKbS5MCTmwaWb2ryStlPS2sZbtymIZmIhGZgKPYdDdV5axvSIHCgAAqlRS\nDtwmaUnd48W12MuY2dWSfk/S29w93UO4DsUykJESRvmVHCgAAKhaCTlwvaTlZrZMw7nvekkfqF/A\nzF4v6c8krXb3pvqjUywDGSmhG0YlBwoAAKrWag509yEzu1nSPRruCHWHu280s09L2uDuayX9V0nT\nJf2v2uUpL7r7tY3WS7EMZKTVUXVVBwoAAKpWxjXU7r5O0rpRsU/VfX910XVSLAOZaPJ6rWbWU/qB\nAgCAKpWVA6uQdbEcvWh9fX3JeDRbVopngj799NPJ+MGDB5PxQ4cOJeOTJ09OxqPnMGPGjGQ86oax\nf//+ZDyaddtI9FpEr1800jty5EgyvmfPnmR8ypQpyXj0WjcaYUZ/A90ut5nJAKoX/b+Puv6cPn06\nGX/++efDbcycOTMZjzo6PProo8n44sXpTpNvfOMbk/Go20bUTWnfvn3JeNSdY8OGDcm4JD3yyCPJ\neNRdKlrXtm2vmPYhKe6y1Und0vUikut+Zl0sA70m11E1AABVyzUHUiwDmShwhyIAACaUnHMgxTKQ\nkVxH1QAAVC3XHEixDGQk11E1AABVyzUHUiwDmch5JjAAAFXKOQdSLAMZyXVUDQBA1XLNgVkUy0Vb\nnQwNDRVaT6N1nXPOOcn49u3bw3WVIWoF1w7RaxG1I4pEI8Do/Yna4p11VvrPMFqPFLfy6Xa5jqoB\ntG7SpEnq7+9/RTxqr3b48OFkPMpbixYtCrc9bdq0ZPyJJ55Ixu+///5k/NJLL03Go9ajX/nKV5Lx\nKB9EtmzZkow3yqXRNqKWb1EOLOu4XLTWadQiNdrXXIvNZuWaA7MolgEM6/YDHQAA45VrDqRYBjKR\n8/VaAABUKeccSLEMZCTXUTUAAFXLNQdSLAMZyXVUDQBA1XLNgRTLQCZyvnsRAABVyjkHjlksm9kS\nSX8haYEkl7TG3T9nZrdK+oikPbVFP+nu65pY3yti0YsTzRyN4o1GJNOnT0/Go9nGvSiaeRvNui06\ns3fBggXJ+M6dO5vYu+ZMmjQpGc91tDpat+wn0CvKzIFnzpxJdr5IdciQ4i4ZUXzv3r2NNl9IdBzf\ntGlToXhR0TE86poUdbZoh6I5s2ghGL0WjbbR7XLNgc2cWR6S9Al3f8jMZkh60My+W/vZH7v7f6tu\n94DekuuoGuhh5ECgTXLNgWMWy+6+Q9KO2veHzOwJSXEzRwDjkvNMYKBXkQOB9sg5B8bn+BPMbKmk\n10t6oBa62cweNbM7zGx28Ds3mdkGM9vQ0p4CPWDkmq3oC0DnkAOBauWaA5suls1suqS/kvQxdz8o\n6U8kXSTp8v+fvXuPt6us733//SVZuV8hEEIuBCQoEQE1XArYUhVf0VbRqgi+tsUeK55Wum213Zva\nbvXQ3XOw52jrPuVlGxWh3RbKtl6ixVJFPagIJFgFEm4hCeQeFuSekGQlv/PHnAsni+c31xxrjjnn\ns+b8vF+v9cqavzXWGM+YK2v8nmes5/kNVUbdn0l9n7svd/el7r60hPYCXe3YsWN1PwB0BjkQaL1c\nc2BD1TDMrE+Vi8RX3P1rkuTu22u+/gVJ325JC4EekfOfoIBeRg4EWi/nHNhINQyT9CVJj7j7Z2vi\nc6tzuSTpHZIebuSARW6jR9uO5FZ8VPVi1qzkX860c+fOwscYLaIqFkVX10Y/h6jyCFUvhsdUCyAv\nZefA1PU3qm4RVYAYGBho5FCjUnQNP3LkSDIeVaSQ4pw2e/bsZLy/v3+Y1jWnaPWM6Jy7Wa45sJE7\nyxdLep+kh8zs59XYxyVdZWbnqlJKZ4OkD7WkhUAPGe2dfaALkQOBNsk1BzZSDePHklK3IoetqQyg\nmFxH1UCvIgcC7ZNrDuQJfkAmcp6vBQBAK+WcA+ksAxnJdVQNAECr5ZoD6SwDGcl1VA0AQKvlmgN7\nvrO8Z8+eZDyqGBGNeqLqDGVVnihTq0duUeWRSNH3Wsr3F6oZnS66DqD1ily7yqx6UVZOi9o/kut4\nEUXbKcV5tqyqF0XzeCfzfiT1c+tUHso5B/Z8ZxnISTcOAgAAaESuOZDOMpCRXEfVAAC0Wq45kM4y\nkImcVwIDANBKOedAOstARnIdVQMA0Gq55kA6y0BGch1VAwDQarnmwHZ3lvslPVX9fHb1dUeVtTq1\nwR9wFufcRg2db4YjyVM6dNw73X32MNv00v8foNt0LAcWvc4W7bQ0uP/Sz/nIkSNl7q5s2ef84OdG\nDhzCOtVRMbNV7r60IwfvkF475147XwBoVC9eH3vtnHvtfLtZXKAQAAAA6HF0lgEAAIBAJzvLyzt4\n7E7ptXPutfMFgEb14vWx18651863a3VszjIAAACQO6ZhAAAAAAE6ywAAAECg7Z1lM1tmZo+Z2Voz\nu67dx28XM7vJzHaY2cM1sePM7Ltm9kT131mdbGOZzGyBmf3AzNaY2Woz+0g13rXnDABFkQO7Mx+Q\nA7tbWzvLZjZW0o2S3ixpiaSrzGxJO9vQRjdLWjYkdp2ku9x9saS7qq+7xYCkj7n7EkkXSvpw9Wfb\nzecMAA0jB3Z1PiAHdrF231k+X9Jad1/n7ocl3Sbp8ja3oS3c/W5Jzw0JXy7plurnt0h6e1sb1ULu\nvtXdf1b9fK+kRyTNUxefMwAURA7s0nxADuxu7e4sz5O0seb1pmqsV8xx963Vz7dJmtPJxrSKmS2S\n9GpJ96lHzhkAGkAO7IF8QA7sPizw6xCv1Ozrurp9ZjZV0r9I+kN331P7tW49ZwBAMd2aD8iB3and\nneXNkhbUvJ5fjfWK7WY2V5Kq/+7ocHtKZWZ9qlwkvuLuX6uGu/qcAaAAcmAX5wNyYPdqd2d5paTF\nZnaqmY2XdKWkFW1uQyetkHR19fOrJX2zg20plZmZpC9JesTdP1vzpa49ZwAoiBzYpfmAHNjd2v4E\nPzN7i6S/kTRW0k3u/pdtbUCbmNmtki6VNFvSdkmflPQNSbdLWijpKUlXuPvQBRCjkpldIulHkh6S\ndKwa/rgqc7a68pwBoChyYHfmA3Jgd+Nx1wAAAECABX4AAABAgM4yAAAAEKCzDAAAAAToLAMAAAAB\nOssAAABAgM4yAAAAEKCzDAAAAAToLAMAAAABOssAAABAgM4yAAAAEKCzDAAAAAToLAMAAAABOsuZ\nMbO/M7P/Vva2AADkjhyIHJm7d7oNPcPMNkiaI2lA0lFJayT9g6Tl7n6syX1fKul/uvv8EXzveEm/\nkDRtJN8PAMBwcsuBZvYpSX8m6VBN+Gx3X9dMW9B9uLPcfm9192mSTpF0g6T/KulLnW2S/kTSMx1u\nAwCg++WWA//Z3afWfNBRxkvQWe4Qd9/t7iskvUfS1WZ2liSZ2c1m9t8HtzOz/2JmW81si5n9rpm5\nmZ1eu62ZTZH0HUknm9m+6sfJjbTDzE6V9J8k/V9lnyMAACm55ECgEXSWO8zd75e0SdLrhn7NzJZJ\n+qikN0o6XdKlwT72S3qzpC01o+MtZnaJme0apgn/r6SPSzo48rMAAKC4DHLgW83sOTNbbWa/18y5\noHvRWc7DFknHJeJXSPqyu6929wOSPlVkp+7+Y3efGX3dzN4haay7f73IfgEAKFFHcqCk2yWdKekE\nSR+U9Akzu6rIMdAb6CznYZ6k5xLxkyVtrHm9MbHNiFT/bPVXkv5zWfsEAGAE2p4DJcnd17j7Fnc/\n6u73SPqcpHeVeQx0h3GdbkCvM7PzVLlQ/Djx5a2Salf2Lqizq6JlTRZLWiTpR2YmSeMlzTCzbZIu\ndPcNBfcHAEAhHcyB0T6shP2gy3BnuUPMbLqZ/aak21Qpd/NQYrPbJf2OmZ1pZpMl1asnuV3S8WY2\no8EmPKzKhefc6sfvVvdxrkoevQMAUCuDHCgzu9zMZlnF+ar8pfWbBU4DPYLOcvt9y8z2qtIh/TNJ\nn5X0O6kN3f07kv6HpB9IWivp3uqXDiW2fVTSrZLWmdkuMzvZzF5nZvuCfQ+4+7bBD1X+BHas+vpo\nk+cIAEBKFjmw6srqfveqUu/50+5+y8hOC92Mh5KMImZ2pip3hCe4+0Cn2wMAQLuQA9Ep3FnOnJm9\nw8wmmNksSZ+W9C0uEgCAXkAORA7oLOfvQ5J2SHpSlceDUgcSANAryIHoOKZhAAAAAAHuLAMAAACB\npuosVx9F+TlJYyV90d1vGGZ7bmNjVHD3ttfaXLZsmff399fd5oEHHrjT3Ze1qUkA6uiGHFits/8S\nRf/qPGZM+t7bsWPHCrcJnUcOfLERd5bNbKykGyVdpspz3Vea2Qp3X1NW44BWSyWKTk1N6u/v18qV\nK+tuM2bMmNltag6AOkaaA6NOZRFldkDHjUt3A44cOVJoP1OmTEnG9+7dW7hNKdH7FnX2Jeno0c5U\nQY3aGuUWpsNW5JwDm/mtPV/SWndf5+6HVSksfnk5zQJ6k7vX/QCQDXIgULJcc2Az0zDm6cVPetsk\n6YKhG5nZNZKuaeI4QE9wd/5kCYwe5ECgRDnnwKbmLDfC3ZdLWi7lOV8LyAl3j4HuQg4EGpdrDmym\ns7xZ0oKa1/OrsZ5UdHFDWYshJk+eHH7twIEDhfaVm3pz0cr6hcrtFzPXUTWAlyicA81MfX19L4kf\nPnw4uX3R69O0adPCr0VzhwcGynm+x7599Z4q3bzo2jh27NjSjjFhwoRk/NChlzxdW1Kco6ZPn56M\nR+9R9DMoMwfOmDEjGd+9e3eh/bRarjmwmTnLKyUtNrNTzWy8Ks9YX1FOs4DelOt8LQAvQQ4ESpZr\nDhzxnWV3HzCzayXdqUrZnJvcfXVpLQN6TM7ztQC8GDkQKFfOObCpOcvufoekO0pqC9DzuHsMjB7k\nQKBcuebAli/wA9C4XEfVAAC0Wq45kM4ykIlOz8kCAKBTcs6BdJZLUnQ0VNboabRXvKgn11+aVsp1\nVA2gee6erKwQVbGIKlhEVRIOHjwYHjt6Ul8kuv5GT8WLto/aGsWLXgNH8pS+k08+ORnfsmVL4X2l\n7Nq1q5T9pCqnDIoqqETVQVpdraQsueZAOstARnpxgAAAgJRvDmz+IfUASjG4ErjeBwAA3aisHGhm\ny8zsMTNba2bXJb6+0Mx+YGb/YWYPmtlbhtsnd5aBjOQ6qgYAoNWazYFmNlbSjZIuU+UR9CvNbIW7\nr6nZ7M8l3e7unzezJapUtFlUb790loGMcPcYANCrSsiB50ta6+7rJMnMbpN0uaTazrJLGnzM4gxJ\nw05Wp7MMZCLnlcAAALRSgzlwtpmtqnm93N2X17yeJ2ljzetNki4Yso9PSfp3M/sDSVMkvXG4g9JZ\nRk9LrcjuZIeVO8tA79m/f3+h7aNrVL1r14knnpiMb926tdCxixpJW1Oi6hkjOXbRqhdjxqSXd0X7\nnzt3bjL+7LPPJuNRZYsoXs9IqoPkpIEc2O/uS5s8zFWSbnb3z5jZr0j6RzM7y93Dg9NZBjLCnWUA\nQK8qIQdulrSg5vX8aqzWByQtqx7vp2Y2UdJsSTuinVINA8gE1TAAAL2qpBy4UtJiMzvVzMZLulLS\niiHbPC3pDZJkZmdKmijpmXo75c4ykBHuLAMAelWzOdDdB8zsWkl3Shor6SZ3X21m10ta5e4rJH1M\n0hfM7I9UWez3fh/mwHSWgYxw9xgA0KvKyIHufocq5eBqY5+o+XyNpIuL7JPOMpCJwT9BAQDQa3LO\ngVl3lqMVqJGRvMnRCttW/zk8Ou6ECROS8YGBgWS83srX6Bxafc7R/seNS/93mz59ejIerRyWpL6+\nvmT8yJEjw7TuxXKb9pBbewC0XtHcFeXGevmg1VUvIjNmzEjGo7ZGue7QoUPJ+Pjx48NjR+9rdIyy\nrr/btm1LxqMqGdH29UybNi0Z3717dzI+adKkZPzgwYOFj91KuebArDvLQK/JdVQNAECr5ZoD6SwD\nGcl1VA0AQKvlmgMpHQdkoqzScWa2zMweM7O1ZnZd4usLzewHZvYfZvagmb2l9JMBAKCAnMuncmcZ\nyEizo2ozGyvpRkmXqfKYz5VmtqK6+nfQn0u63d0/b2ZLVFk1vKipAwMA0KRc7yzTWQYyUsLI+XxJ\na919nSSZ2W2SLpdU21l2SYOrKmdIKvbsVwAAWoA5ywDqcvdGRtWzzWxVzevl7r685vU8SRtrXm+S\ndMGQfXxK0r+b2R9ImiLpjSNrMQAA5WgwB3ZEU51lM9sgaa+ko5IG3H1pGY0a1I4RxtixY5PxqLRM\nVP4samvRMmpR6bho/xMnTkzGpbgkTPSfccqUKcl40XJs0TlE70VUQijajxSX4NmwYUP9xmWugf/z\n/SX8nl0l6WZ3/4yZ/YqkfzSzs9w9zyE9kKmiOdDMkmUvo2tsdK3O8e5blNP27duXjEelz6J4VPrs\nxBNPDNsUlcuLct0ZZ5yRjN93333JeFTCb8GCBcl49PM8/fTTk/EdO3Yk45K0ffv2Qm0q0uc4fPhw\neNxWy/H/tlTOneVfd/f+EvYD9LwSRtWbJdVeqedXY7U+IGlZ9Xg/NbOJkmZLiq/MACLkQKAkud5Z\nphoGkImSVgKvlLTYzE41s/GSrpS0Ysg2T0t6gySZ2ZmSJkp6psRTAQCgkDZWhPprM/t59eNxM9s1\n3D6bvbPsqsx9dEl/P2Tu5GCjrpF0TZPHAXpCs6Nqdx8ws2sl3SlprKSb3H21mV0vaZW7r5D0MUlf\nMLM/UuV3+P2e63AeyBs5EChROypCufsf1Wz/B5JePdx+m+0sX+Lum83sREnfNbNH3f3u2g2qF4/l\n1UaRkIE6ypiv5e53qFIOrjb2iZrP10i6uOkDASiUA8eMGUMOBOpoU0WoWldJ+uRwO21qGoa7b67+\nu0PS16uNBDBCg6uBow8A+SAHAuUqIQemKkLNS21oZqdIOlXS94fb6YjvLJvZFElj3H1v9fM3Sbp+\npPsrQ1Rtod7XoqoXqRXLUvwngmilblTpYfLkycl4VN0iOm60fyk+52i1bNSmaKQ3derUQm06cOBA\n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\nPk/3AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20da5e93eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15,15))\n",
    "for i in range(5):\n",
    "    plt.subplot(5, 2, 2 * i + 1)\n",
    "    plt.imshow(np.reshape(X_prototypes[2 * i], [28, 28]), cmap='gray', interpolation='none')\n",
    "    plt.title('Digit: {}'.format(2 * i))\n",
    "    plt.colorbar()\n",
    "    \n",
    "    plt.subplot(5, 2, 2 * i + 2)\n",
    "    plt.imshow(np.reshape(X_prototypes[2 * i + 1], [28, 28]), cmap='gray', interpolation='none')\n",
    "    plt.title('Digit: {}'.format(2 * i + 1))\n",
    "    plt.colorbar()\n",
    "\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
